home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
System Booster
/
System Booster.iso
/
Systemmonitors
/
ResAnalyzer
/
Manuale
< prev
next >
Wrap
Text File
|
1996-09-26
|
16KB
|
365 lines
ResAnalyzer v2.2
© 1992 By Silvio Umberto Zanzi
Via Agostino Gemelli 9
40026 Imola (BO) - Italy
IDCMP BBS (300-14400 HST)
Imola Direct Communication Message Port
Tel. +39/542/25983
FidoNet.........2:332/405
AmigaNet.......39:102/300
AmigaNet.......39:102/302
NeST...........90:8002/0
NeST...........90:8002/100
NeST...........90:8002/101
/\/\/\/\/\/\/\/\/\/\/\
...Note Di CopyRight )
\/\/\/\/\/\/\/\/\/\/\/
ResAnalyzer è un prodotto ShareWare, come tale potete usarlo, copiarlo e
distribuirlo liberamente, il vostro unico obbligo e` l'invio di L. 20.000
all'autore nel caso il programma vi risultasse utile.
Sono estremamente graditi commenti, suggerimenti e indicazioni di eventuali
bug nascosti.
L'autore non si assume responsabilità per danni diretti o indiretti causati
da usi più o meno impropri di ResAnalyzer 2.2.
/\/\/\/\/\/\/\/\/\/\/\
........Introduzione )
\/\/\/\/\/\/\/\/\/\/\/
ResAnalyzer è un monitor per moduli residenti, come tale è in grado di
visualizzare qualsiasi informazione relativa a questo subsistema di Amiga.
Chiunque abbia tentato di sondare il mondo dei moduli residenti e` stato
finora costretto ad utilizzare le relative (incomplete) opzioni di monitor
generici come Xoper, Exector, ARTM, ecc.
Con ResAnalyzer e` ora possibile avere un quadro globale dei moduli residenti
e avere tutte le informazioni necessarie in modo chiaro, schematico e veloce.
ResAnalyzer è di grandissimo aiuto per chiunque sviluppi moduli residenti, con
esso è più facile verificare se i propri moduli sono stati installati
correttamente e se corrispondono alle dirittive impartite.
Utenti non interessati alla programmazione possono verificare se quello strano
modulo è il nuovo virus ancora sconosciuto a tutti i virus killer o se qualche
programma ha installato "di nascosto" moduli residenti.
/\/\/\/\/\/\/\/\/\/\/\
.......Installazione )
\/\/\/\/\/\/\/\/\/\/\/
ResAnalyzer non richiede particolari procedure di installazione, è sufficiente
cliccare l'icona associata da WorkBench oppure digitare il nome RESANALYZER da
Shell.
Utilizzando ResAnalyzer su un sistema con KickStart 1.2/1.3 si potra` notare
una certa lentezza nella visualizzazione dei testi, questo problema e` dovuto
alle routine di rendering dei testi della libreria graphics.
Per sopperire a tale lentezza si puo` utilizzare un velocizzatore di testi
come il BlitzFonts di Hayes C. Haugen oppure FF di Charlie Heath della
Microsmiths.
BlitzFonts lo si trova nel Fish Disk 60 o in qualsiasi BBS abbastanza fornita,
FF è nel disco Workbench 1.3.
Fortunatemente nel KickStart 2.04 le funzioni in rom relative alla gestione
testi sono state ottimizzate, quindi le utility sopracitate diventano inutili.
ResAnalyzer riconosce se utilizzate un sistema NTSC o PAL e si comporta di
conseguenza, non occupa il processo shell da cui viene lanciato, non sottrae
cicli al processore se lasciato in background e si adatta automaticamente a
80 colonne se viene lanciato da un ambiente a 60.
ResAnalyzer funziona su ogni modello di Amiga uscito fino ad oggi (Marzo 1992)
e su qualsiasi versione di sistema operativo uguale o superiore alla 1.2.
Su sistema operativo 2.04 ResAnalyzer funzionerà correttamente e si adattera`
automaticamente alle eseginze estetiche del nuovo ambiente operativo.
Ho fatto vari sforzi per rendere il programma comodo, efficiente e standard,
spero di essere ripagato vedendo ResAnalyzer ben diffuso per il mondo.
/\/\/\/\/\/\/\/\/\/\/\
.......Cenni Teorici )
\/\/\/\/\/\/\/\/\/\/\/
Programmare moduli residenti non è semplice, la difficoltà maggiore è reperire
tutte le informazioni necessarie ed acquisire una visione globale
sull'argomento.
Purtroppo non è facile trovare articoli specifici nelle varie riviste
tecniche, ed anche i Rom Kernel Manual 1.3 sono di scarso aiuto, le
informazioni infatti sono incomplete e sparse in vari punti nei due volumi.
Il miglior metodo per assimilare conoscenza in questo campo è sicuramente
l'osservazione diretta ed ore di sperimentazione.
Vi sono principalmente due metodi per far eseguire automaticamente al sistema
delle proprie routine subito dopo il reset:
1) Utilizzando le variabili Capture di ExecBase
2) Utilizzando una struttura Resident
Nella tabella seguente vi è un elenco dei metodi usati da alcuni programmi.
Nome Autore Metodo
------------------------------------------------------------------
Guardian v1.1 © Leonardo Fei 2
Pseudo-Ops Virus Protector © Pseudo-Ops 2
Virus Slayer © The Band 1
Protec III © Bowie Softworks 2
Aspro © Dr Debug 1,2
Rom Crack © SCA 1
RAD v1.0 © Commodore-Amiga 2
RRAM Disk © B. Dayley & Other Guys 2
Privilege Handler © John Veldthuis 2
SCA virus 1
Byte Bandit virus 1
EDV (BGS9) virus 2
HCS II virus 1
Pentagon Circle virus 1
16 Bit Crew virus 1
BackFlash virus 1
WarHawk virus 1
NorthStar 1 (anti)virus 1
NorthStar 2 (anti)virus 1
Phantasmumble virus 1
Graffiti virus 1
UltraFox virus 1
Questi due metodi sono spiegati nella prossima sezione, nelle voci relative
alle opzioni di ResAnalyzer.
/\/\/\/\/\/\/\/\/\/\/\
.............Opzioni )
\/\/\/\/\/\/\/\/\/\/\/
Le funzioni di ResAnalyzer sono attivabili tramite un click del mouse sopra
i rispettivi gadget oppure dai tasti funzione da F1 a F6.
Premendo in qualsiasi momento il tasto F10 si attiva l'iconifica.
Per uscire oltre all'apposito gadget si può utilizzare il tasto ESC.
Captures
========
I captures sono tre variabili presenti nella struttura ExecBase, definite
come:
SysBase->ColdCapture
SysBase->CoolCapture
SysBase->WarmCapture
Queste tre variabili vengono automaticamente scandite dal computer durante
le operazioni di startup, l'ordine di scansione corrisponde all'elenco.
Se una di queste variabili contiene un valore diverso da zero, verrano
momentaneamente sospese le operazioni di startup e verra` eseguita la routine
puntata dalla variabile stessa.
Ultimata la routine utente, verrano proseguite le normali operazioni di
startup.
I puntatori presenti in CoolCapture e WarmCapture vengono preservati anche
dopo vari reset, ColdCapture viene invece azzerato ogni volta.
L'opzione CAPTURES di ResAnalyzer mostra eventuali puntatori e permette
eventualmente di azzerarli.
KickMemPtr
==========
Questa variabile, definita come SysBase->KickMemPtr, contiene il puntatore
alla struttura MemList del primo modulo residente presente in RAM.
Nella struttura MemList è contenuta una struttura MemEntry, tramite
quest'ultima è possibile avere informazioni utili sulle specifiche di memoria
del blocco residente ed un puntatore ad una struttura Resident.
La struttura MenList contiene anche una struttura Node dalla quale si può
determinare se vi sono altre strutture MemList concatenate.
Il sistema utilizza questa lista per capire quali blocchi di memoria deve
proteggere, rendendo impossibile ad un generico programma di occupare la
memoria che avete riservato al modulo residente.
La lista viene mantenuta anche dopo il reset.
L'opzione KICKMEMPTR di ResAnalyzer fornisce alcune utili informazioni quali
locazione iniziale e finale del codice eseguibile del modulo e sua lunghezza
in byte.
KickTagPtr
==========
Questa variabile, definita come SysBase->KickTagPtr, contiene una catena di
array.
Ogni volta che viene inserito un nuovo modulo residente nel sistema, viene
aggiunto un nuovo puntatore in coda all'array puntato da KickTagPtr.
Per ottenere il prossimo elemento della catena, si deve considerare il valore
puntato dall'ultimo puntatore, determinare se e` settato il bit 31, e in tal
caso resettarlo.
Il valore risultante è il puntatore del prossimo elemento.
Questa catena indica al sistema quali sono i moduli che l'utente ha installato
in memoria, ed è probabilmente usato dal sistema per il lancio dei moduli
stessi.
Resanalyzer mostra tutti i moduli presenti nella catena ed indica la locazione
di KickTagPtr.
KickChkSum
==========
Questa variabile, definita come SysBase->KickCheckSum, serve al sistema per
verificare, al momento del reset, se tutti i codici relativi ai moduli
residenti sono integri.
Questo controllo viene eseguito effettuando il checksun delle strutture
Resident e del codice associato confrontandolo con il valore indicato in
SysBase->KickCheckSum.
Se i valori non coincidono, il sistema ignora i moduli installati, questi
infatti potrebbero essere stati danneggiati dal cattivo funzionamento di un
qualche programma.
E` fondamentale aggiornare questa variabile tramite SumKickData() ogni volta
che si installa un nuovo modulo.
ResAnalyzer permette di azzerare SysBase->KickCheckSum, in questo modo
disattivate tutti i moduli, è curioso notare che alcuni moduli possono essere
riattivati senza nessun danno anche dopo vari reset!
ResAnalyzer controlla anche che la funzione SumKickData() non sia stata
patchata da altri programmi, in tale evenienza l'utilizzo di questa funzione
sarebbe inaffidabile (basti considerare i virus che modificano SumKickData()).
ResModules
==========
Questa opzione visualizza tutti gli elementi dell'array di moduli residenti
presenti in SysBase->ResModules.
Ogni elemento è un puntatore a una struttura Resident.
struct Resident
{
UWORD rt_MatchWord;
struct Resident *rt_MatchTag;
APTR rt_EndSkip;
UBYTE rt_Flags;
UBYTE rt_Version;
UBYTE rt_Type;
BYTE rt_Pri;
char *rt_Name;
char *rt_IdString;
APTR rt_Init;
};
ResAnalyzer mostra tutti i moduli presenti, sia quelli utente indicati come
moduli RAM, ed evidenziati dal simbolo "»»", che quelli presenti in ROM,
visualizzando tutti i parametri di maggiore significato delle relative
struttura Resident.
Normalmente nella versione 1.2 sono presenti 23 moduli, mentre nella 1.3 c'è
un modulo in più, la libreria privata romboot.
rt_InitCode è un puntatore all'inizio del codice del modulo, rt_Pri serve per
ordinare l'array in ordine decrescente, infatti al momento del reset verranno
eseguiti per primi i moduli a maggiore priorità, e via via quelli a minore.
Il rt_Type descrive il tipo di modulo, i tipi sono molteplici: libreria,
device, risorsa, task, unknown (modulo non classificabile), ecc.
L'rt_IdString è un messaggio scritto dal programmatore all'interno del proprio
modulo, solitamente la data di creazione e versione.
Il rt_Flags descrive le modalità del ResModule, i tipi possono essere quattro:
Flag Introdotti nel KickStart
------------------------------------------------
RTF_AUTOINIT 1.2
RTF_COLDSTART 1.2
RTF_AFTERDOS 2.0
RTF_SINGLETASK 2.0
I flag introdotti nella versione 1.2 hanno un grande significato per quanto
riguarda l'inizializzazione del modulo.
Questo complicato processo, molto in breve, funziona in questo modo: quando
exec incontra il flag RTF_COLDSTART, chiama la funzione InitCode(), tale
funzione a sua volta chiama InitResident().
Se non e` impostato il flag RTF_AUTOINIT, InitResident() chiama il codice
puntato dal campo rt_Init, altrimenti chiama la funzione MakeLibrary().
In questo caso nella locazione puntata da rt_Init non vi sara` del codice
eseguibile, ma dati che MakeLibrary() utilizzera` per creare una libreria,
un device o una risorsa.
Il sistema scandisce il campo rt_Flags per sapere se deve chiamare
AddLibrary(), AddDevice() o AddResource().
Sul significato dei nuovi flag 2.0 non si conosce molto, a parte il fatto che
i moduli con flag RTF_AFTERDOS hanno sempre priorità inferiore a -100, mentre
il flag RTF_SINGLETASK sta a indicare moduli in cui SysBase->ThisTask=0.
I moduli residenti aggiunti al sistema verrano inseriti nell'array di
ResModules solo al successivo reset.
Per passare da una pagina all'altra all'interno della funzione ResModules di
ResAnalyzer si devono usare i tasti cursore.
Premendo il tasto P, ResAnalyzer dirottera` su PRT: tutta la lista dei
ResModules, i puntatori dei Capture, di kickTagPtr e di KickMemPtr.
Information
===========
Questa opzione mostra alcuni ringraziamenti personali più alcune interessanti
informazioni sul sistema.
Viene indicato la versione di KickStart, la configurazione del processore, la
frequenza di vertical blank e di alimentazione rete (NTSC 60Hz, PAL 50Hz) e se
è presente l'ECS.
/\/\/\/\/\/\/\/\/\/\/\
.......Compatibilità )
\/\/\/\/\/\/\/\/\/\/\/
ResAnalyzer è stato testato con successo su:
- Amiga 500 normale
- Amiga 500 1 Mega Chip
- Amiga 1000 768K
- Amiga 2000 normale
- Amiga 2000 68030+68881
- Amiga 3000 25-100
- KickStart: 1.2 - 1.3 - 2.0ß - 2.04
- Processori: 68000 - 68010 - 68030 - [68881 - 68882]
/\/\/\/\/\/\/\/\/\/\/\
......Considerazioni )
\/\/\/\/\/\/\/\/\/\/\/
Tutte le informazioni esposte in questo manuale e codificate in ResAnalyzer
sono frutto di svariate ore di lavoro in un campo dove praticamente non esiste
documentazione.
Se trovate che qualcosa scritto qui o codificato in ResAnalyzer è scorretto,
per favore avvertimi attraverso ogni mezzo (l'ideale sarebbe l'indirizzo
FidoNet 2:332/405 di cui sono SysOp), è mia intenzione migliorare e correggere
ResAnalyzer.
Per concludere vorrei ringraziare queste persone, i cui consigli, stimoli e
suggerimenti hanno avuto una grande influenza nello sviluppo di ResAnalyzer:
- Giorgio Terzi................per avermi insegnato il C su Amiga
- Nic Wilson...................per la routine di rilevazione ECS
- Marco Mariani................per i numerosi suggerimenti e aiuti
- GianMario Sartini............per avermi prestato il suo A590+
- Luigi Mongardi...............per avermi spiegato alcune cose sull'uso
della stampante
- Luigi Callegari..............per aver pubblicato ResAnalyzer su EnigmA Disk
- Luca Spada...................per aver creato la rete telematica mondiale SAN,
principale vettore di diffusione di ResAnalyzer
- Michele Masiero..............per aver hatchato ResAnalyzer nella rete
telematica mondiale ADS
- Romano Tenca.................per alcune preziose informazioni tecniche
- Giammarco Giovannelli........per aver detto che ResAnalyzer è bello!
- Mario Mure'..................per il beta testing della routine di rilevazione
ECS
- Barbara, Ylenia & Daniela....per il semplice fatto di esistere.
- L'area AMY_DEV.ITA di Fido...per la possibilita` di acquisire nuove
informazioni e conoscere altri programmatori
Ringrazio anche le seguenti persone, grazie alle quali ho potuto diventare
SysOp di un nodo FidoNet.
- Giuseppe Selvatici
- Marco Baldini
- Paolo Marchi
- Marcello Ardini
- Mario Battacchi
- Andrea Mennini
- Antonio Pasini
Un ringraziamento particolare a Karl H. Riesen, la prima (e tutt'ora unica)
persona che si è registrata a ResAnalyzer.
Non ci sarebbe stata questa versione senza il suo appoggio morale, grazie
Karl!